Linux 简介
Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
Linux 参数
*** | *** |
---|---|
外文名 | Linux |
类 别 | 操作系统 |
发布时间 | 1991年10月5日 |
创始人 | 林纳斯·托瓦兹 |
发行版本 | Debian、RedHat、Slackware等 |
特 点 | 免费、可靠、安全、稳定、多平台 |
Linux 发行版
Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。
目前市面上较知名的发行版有:
- Ubuntu
- RedHat
- CentOS
- Fedora
- SuSE
- Debian
- OpenSUSE
- Arch Linux
- SolusOS
Linux 应用邻域
今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。
目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎。
- 巴西联邦政府由于支持Linux而世界闻名。
- 有新闻报道俄罗斯军队自己制造的Linux发布版的,做为G.H.ost项目已经取得成果.
- 印度的Kerala联邦计划在向全联邦的高中推广使用Linux。
- 中华人民共和国为取得技术独立,在龙芯过程中排他性地使用Linux。
- 在西班牙的一些地区开发了自己的Linux发布版,并且在政府与教育领域广泛使用,如Extremadura地区的gnuLinEx和Andalusia地区的Guadalinex。
- 葡萄牙同样使用自己的Linux发布版Caixa Mágica,用于Magalh?es笔记本电脑和e-escola政府软件。
- 法国和德国同样开始逐步采用Linux。
Linux 系统启动过程
linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:
- 内核的引导
- 运行 init
- 系统初始化
- 建立终端
- 用户登录系统
Linux 目录结构
- 在命令窗口输入命令 ls
- 树状目录结构
具体的目录介绍
- /:
根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
- /bin:
bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
- /boot:
Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
- /cdrom:
这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom
- /dev:
dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
- /etc:
etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
- /home:
如果建立一个用户,用户名是”xx”,那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
- /lib:
lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
- /lost+found:
在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
- /mnt:
这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。可以参看/etc/fstab的定义。
- /media:
有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
- /opt:
这里主要存放那些可选的程序。
- /proc:
可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
- /root:
Linux超级权限用户root的家目录。
- /sbin:
这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的,凡是目录sbin中包含的都是root权限才能执行的。
- /selinux :
对SElinux的一些配置文件目录,SElinux可以让linux更加安全。
- /srv:
服务启动后,所需访问的数据目录,举个例子来说,www服务启动读取的网页数据就可以放在/srv/www中
- /tmp:
临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
- /usr:
这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具
- /usr/local:
这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面、。
- /usr/share :
系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
- /var:
这个目录的内容是经常变动的,看名字就知道,可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。
Linux 文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,
Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
- 在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
1 |
|
实例中,bin文件的第一个属性用”d”表示。”d”在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
- 每个文件的属性由左边第一部分的10个字符来确定
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用”r”字符表示,则有读权限,如果用”-“字符表示,则没有读权限;
第2、5、8位表示写权限,如果用”w”字符表示,则有写权限,如果用”-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用”x”字符表示,则有执行权限,如果用”-“字符表示,则没有执行权限。
使用chmod修改文件属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
变更权限的指令chmod的语法是这样的
1 | chmod [-R] xyz 文件或目录 |
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下
1 | [root@www ~]# ls -al .bashrc |
- 那如果要将权限变成 -rwxr-xr– 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。
符号类型改变文件权限
还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦! 那么我们就可以藉由u, g, o来代表三种身份的权限!
此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看
- 如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定
1 | # touch test1 // 创建 test1 文件 |
- 而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则
1 | # chmod a-x test1 |
Linux 基本操作指令
查找文件
find / -name filename.txt
根据名称查找/目录下的filename.txt文件。
find . -name “*.xml”
递归查找所有的xml文件
find . -name “*.xml” |xargs grep “Hello World”
递归查找所有文件内容中包含hello world的xml文件
grep -H ‘spring’ *.xml
查找所以有的包含spring的xml文件
find ./ -size 0 | xargs rm -f &
删除文件大小为零的文件
ls -l | grep ‘jar’
查找当前目录中的所有jar文件
grep ‘test’ d*
显示所有以d开头的文件中包含test的行。
grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
grep ‘[a-z]/{5/}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
查看一个程序是否运行
- ps –ef|grep tomcat
查看所有有关tomcat的进程
终止线程
- kill -9 19979
终止线程号位19979的线程
查看文件,仅列出目录本身,而不是列出目录内的文件数据
- ls -d
查看文件,包含隐藏文件
- ls -al
查看文件,包含文件的属性与权限等等数据
- ls -l
当前工作目录
- pwd
复制文件
cp sourceFolder targetFolder
scp sourecFile romoteUserName@remoteIp:remoteAddr远程拷贝
创建目录
- mkdir newfolder
删除目录
rmdir deleteEmptyFolder
删除空目录
rm -rf deleteFile
递归删除目录中所有内容
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
1 | [root@www tmp]# rm -i bashrc |
- 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
移动文件
mv /temp/movefile /targetFolder
rm 1
2[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中
1 | [root@www ~]# cd /tmp |
将某个文件移动到某个目录去,就是这样做!
将刚刚的目录名称更名为 mvtest2
1 | [root@www tmp]# mv mvtest mvtest2 |
重命名
- mv oldNameFile newNameFile
切换用户
- su -username
修改文件权限
- chmod 777 file.java
file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行4(读)、2(写)、1(执行)
列出压缩文件列表
- tar -tzf test.tar.gz
压缩/解压文件
tar
解包:tar zxvf filename.tar
打包:tar czvf filename.tar dirnamegz
解压1:gunzip filename.gz
解压2:gzip -d filename.gz
压缩:gzip filename.tar.gz 和.tgz
解压:tar zxvf filename.tar.gz
压缩:tar zcvf filename.tar.gz dirname
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3…..bz2
解压1:bzip2 -d filename.bz2
解压2:bunzip2 filename.bz2
压缩:bzip2 -z filename.tar.bz2
解压:tar jxvf filename.tar.bz2
压缩:tar jcvf filename.tar.bz2 dirnamebz
解压1:bzip2 -d filename.bz
解压2:bunzip2 filename.bz.tar.bz
解压:tar jxvf filename.tar.bzz
解压:uncompress filename.z
压缩:compress filename.tar.z
解压:tar zxvf filename.tar.z
压缩:tar zcvf filename.tar.z dirname- zip
解压:unzip filename.zip
压缩:zip filename.zip dirname
- sudo tar xvf test.tar.gz
管理员身份解压
查看文件头10行
- head -n 10 example.txt
查看文件尾10行
- tail -n 10 example.txt
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
查看日志类型文件
- tail -f exmaple.log
这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。
使用超级管理员身份执行命令
- sudo rm a.txt
使用管理员身份删除文件
查看端口占用情况
- netstat -tln | grep 8080
查看端口8080的使用情况
查看端口属于哪个程序
- lsof -i :8080
查看进程
ps aux|grep java
查看java进程
ps aux
查看所有进程
以树状图列出目录的内容
- tree a
ps:Mac下使用tree命令
文件下载
Wget常用参数
-b:后台下载,Wget默认的是把文件下载到当前目录。
-O:将文件下载到指定的目录中。
-P:保存文件之前先创建指定名称的目录。
-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。
-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。
-r:使用递归下载
网络检测
- ping www.taobao.com
远程登录
- ssh userName@ip
打印信息
- echo $JAVA_HOME
打印java home环境变量的值
防火墙命令
firewall-cmd –state
查询防火墙状态
systemctl stop firewalld.service
关闭防火墙
systemctl start firewalld.service
开启防火墙
切换目录
- cd [相对路径或绝对路径]
1 | #使用 mkdir 命令创建 runoob 目录 |
复制文件或目录
- cd [相对路径或绝对路径]
1 | [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) |
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用於目录的复制行为;(常用)
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
1 | [root@www ~]# cp ~/.bashrc /tmp/bashrc |
查看MySQL的安装路径
- ps -ef|grep mysql
1 | root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid |
- usr/bin/mysql 是指:mysql的运行路径
- var/lib/mysql 是指:mysql数据库文件的存放路径
- usr/lib/mysql 是指:mysql的安装路径
联网/关网
- ifup [网络地址]
如:
- 开启网络连接
cd 1
2
3[root@localhost ~]# ifup eno16777736
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@localhost ~]#
- 关闭网络连接
cd 1
[root@localhost ~]# ifdown eno16777736